package lzzy;

import java.io.*;

public class Copy {
    /** Main method
        @param args[0] for sourcefile
        @param args[1] for targetfile
     */
    public static void main(String[] args) throws IOException {
        // 检查命令行参数的用法
        if(args.length !=2){
            System.out.println(
               "Usage: java Copy sourceFile targetfile");
            System.exit(1);
        }

        // 检查源文件是否存在
        File sourceFile = new File(args[0]);
        if (! sourceFile.exists()) {
            System.out.println("Source file" + args[0] + "does not exist");
            System.exit(2);
        }

        // 检查目标文件是否存在
        File targetFile = new File(args[1]);
        if (targetFile.exists()) {
            System.out.println("Target file" + args[1] + "already exists");
            System.exit(3);
        }

        try(
            // 创建一个输入流
            BufferedInputStream input =
              new BufferedInputStream(new FileInputStream(sourceFile));

            // 创建一个输出流
            BufferedOutputStream output =
              new BufferedOutputStream(new FileOutputStream(targetFile));
        ){
            // 从输入中连续读取一个字节并将其写入输出
            int r, numberOfBytesCopied = 0;
            while ((r = input.read()) != -1){
                output.write((byte)r);
                numberOfBytesCopied++;
            }

            // 显示文件大小
            System.out.println(numberOfBytesCopied + "bytes copied");
        }
    }
}
